// pages/check/detail.js
const request = require('../../utils/request')
Page({

  /**
   * 页面的初始数据
   */
  data: {
    checkInfo: {},
    photos: [], // 现场照片
    remark: "",
    reasonList: [] // 核查备注
  },
  // 返回上一页
  navigateBack() {
    wx.navigateBack();
  },

  // 上传合格证图片
  uploadCertificate(e) {
    const productIndex = e.currentTarget.dataset.index;

    wx.chooseImage({
      count: 1, // 只允许上传一张
      sizeType: ['original', 'compressed'],
      sourceType: ['album', 'camera'],
      success: (res) => {
        const tempFilePaths = res.tempFilePaths;
        if (tempFilePaths.length === 0) return;

        wx.showLoading({
          title: '上传中...',
          mask: true
        });

        // 上传图片
        request.upload('/admin-api/infra/file/upload', tempFilePaths[0])
          .then(res => {
            if (res.code === 0) {
              // 更新对应商品的合格证图片
              const checkInfo = {
                ...this.data.checkInfo
              };
              checkInfo.products[productIndex].certification = res.data;

              this.setData({
                checkInfo: checkInfo
              });

              wx.showToast({
                title: '上传成功',
                icon: 'success'
              });
            } else {
              wx.showToast({
                title: '上传失败',
                icon: 'none'
              });
            }
          })
          .catch(error => {
            console.error('图片上传失败', error);
            wx.showToast({
              title: '上传失败',
              icon: 'none'
            });
          })
          .finally(() => {
            wx.hideLoading();
          });
      }
    });
  },
  // 备注选择变化（picker）
  onReasonChange: function (e) {
    console.log("e:" + e)
    const index = e.detail.value;
    const selectedOption = this.data.reasonList[index];
    // 如果后端返回对象并且需要 id，可通过 refuseReasonsRaw[idx] 获取
    this.setData({
      "checkInfo.remark": selectedOption.label,
    });
  },

  // 上传现场照片
  uploadPhoto() {
    // 最多上传5张照片
    if (this.data.photos.length >= 5) {
      wx.showToast({
        title: '最多上传5张照片',
        icon: 'none'
      });
      return;
    }


    wx.chooseImage({
      count: 5, // 最多选择剩余可上传的数量
      sizeType: ['original', 'compressed'],
      sourceType: ['album', 'camera'],
      success: (res) => {
        const tempFilePaths = res.tempFilePaths; // 选中的图片临时路径数组
        if (tempFilePaths.length === 0) return;

        wx.showLoading({
          title: '上传中...',
          mask: true
        });

        // 循环调用单张上传接口，返回Promise数组
        const uploadPromises = tempFilePaths.map(tempPath => {
          // 调用单张上传接口（注意：这里是单张上传，每次传一个tempPath）
          return request.upload('/admin-api/infra/file/upload', tempPath);
        });

        // 等待所有图片上传完成
        Promise.all(uploadPromises)
          .then(results => {
            // 过滤上传成功的图片URL
            const newPhotos = results
              .filter(res => res.code === 0) // 只保留上传成功的
              .map(res => res.data); // 假设res.data是单张图片的服务器URL

            // 更新页面数据（合并原有图片和新上传的图片）
            this.setData({
              photos: [...this.data.photos, ...newPhotos]
            });

            wx.showToast({
              title: `成功上传${newPhotos.length}张图片`,
              icon: 'success'
            });
          })
          .catch(error => {
            console.error('图片上传失败', error);
            wx.showToast({
              title: '部分图片上传失败',
              icon: 'none'
            });
          })
          .finally(() => {
            wx.hideLoading();
          });
      }
    });
  },

  // 删除照片
  deletePhoto(e) {
    const index = e.currentTarget.dataset.index;
    const photos = [...this.data.photos];
    photos.splice(index, 1);
    this.setData({
      photos
    });
  },

  // 备注输入变化
  onRemarkChange(e) {
    this.setData({
      "checkInfo.remark": e.detail.value
    });
  },

  // 拒绝核查
  rejectCheck() {
    // 必选理由检查
    if (!this.data.checkInfo.remark) {
      wx.showToast({
        title: '请选择拒绝理由',
        icon: 'none'
      });
      return;
    }
    wx.showModal({
      title: '确认拒绝',
      content: '确定要拒绝该申报单吗？',
      confirmColor: '#F44336',
      success: (res) => {
        if (res.confirm) {
          this.setData({
            "checkInfo.orderStatus": "rejected"
          })
          // 这里可以提交拒绝操作
          wx.showLoading({
            title: '提交中...'
          });
          // 请求接口
          request.post('/admin-api/system/order-apply/check', this.data.checkInfo).then(res => {
            console.log("res:" + res)
            wx.hideLoading()
            if (res.code === 0) {
              // 模拟保存成功
              setTimeout(() => {
                wx.showToast({
                  title: '提交成功',
                  icon: 'success'
                });
                const pages = getCurrentPages();
                const prevPage = pages[pages.length - 2]; // 上一页（页面 A）的实例
                // 3. 调用页面 A 的刷新方法（需在页面 A 中定义）
                prevPage.refreshData(); // 例如：页面 A 中定义了 refreshData 方法
                // 4. 返回上一页
                wx.navigateBack({
                  delta: 1 // 返回的页面数
                });
              }, 1000);
            }
          })
        }
      }
    });
  },

  // 通过核查
  passCheck() {
    // 验证是否上传了现场照片
    // if (this.data.photos.length === 0) {
    //   wx.showToast({
    //     title: '请至少上传一张现场照片',
    //     icon: 'none'
    //   });
    //   return;
    // }

    wx.showModal({
      title: '确认通过',
      content: '确定要通过该申报单吗？',
      confirmColor: '#07C160',
      success: (res) => {
        if (res.confirm) {
          // 这里可以提交通过操作
          wx.showLoading({
            title: '提交中...'
          });

          if (this.data.checkInfo.orderStatus === 'declared') {
            // 请求接口
            this.setData({
              "checkInfo.orderStatus": "verified"
            })
          }else if(this.data.checkInfo.orderStatus === 'verified'){
            // 请求接口
            this.setData({
              "checkInfo.orderStatus": "passed"
            })
          }

          // 请求接口
          request.post('/admin-api/system/order-apply/check', this.data.checkInfo).then(res => {
            console.log("res:" + res)
            wx.hideLoading()
            if (res.code === 0) {
              // 模拟保存成功
              setTimeout(() => {
                wx.showToast({
                  title: '提交成功',
                  icon: 'success'
                });

                // 返回订单列表页
                // setTimeout(() => {
                //   wx.navigateBack();
                // }, 1500);
                const pages = getCurrentPages();
                const prevPage = pages[pages.length - 2]; // 上一页（页面 A）的实例

                // 3. 调用页面 A 的刷新方法（需在页面 A 中定义）
                prevPage.refreshData(); // 例如：页面 A 中定义了 refreshData 方法

                // 4. 返回上一页
                wx.navigateBack({
                  delta: 1 // 返回的页面数
                });
              }, 1000);
            }
          })
        }
      }
    });
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 获取订单ID
    const orderId = options.id;
    // 加载拒绝原因
    this.fetchRefuseReasons();
    // 请求详情接口
    request.get('/admin-api/system/order-apply/getForCheck', {
      id: orderId
    }).then(res => {
      console.log("res:" + res)
      wx.hideLoading()
      if (res.code === 0) {
        this.setData({
          checkInfo: res.data,
          photos: res.data.photos || []
        })
      }
    })
  },

  // 获取拒绝原因列表
  fetchRefuseReasons() {
    request.get('/admin-api/mini/home/getRefuseReason').then(res => {
      if (res.code === 0) {
        // 支持后端返回字符串数组或对象数组

        this.setData({
          reasonList: res.data
        });

      }
    });
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})